python:二维列表(list)初始化 |
您所在的位置:网站首页 › 二维list python › python:二维列表(list)初始化 |
当我们使用python做数据的时候,经常会遇到需要初始化一个二维列表,然后对列表的每一个子项目(我们这里假设也是列表)进行操作。 在初始化的时候有一个坑,在做题目的时候卡住好久,根本找不到解决的方法。后来才发现是二维列表初始化的问题。 首先,如果我们需要初始化一个一维列表的时候 In [1]:a = [0] * 5 In [2]:a Out[2]: [0, 0, 0, 0, 0]二维列表的初始化可以这样做: In [3]:b = [[0] * 5] * 5 In [4]:b Out[4]: [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]不过这样有一个很大的问题:这样操作的意思实际上是对于[0] * 5的一维列表复制了5次。也就是说,当我更改其中的任意一个的时候,其实是对b列表中的5个子列表全部修改了。 In [5]:b[0][0]='这个方法不行' In [6]:b Out[6]: [['这个方法不行', 0, 0, 0, 0], ['这个方法不行', 0, 0, 0, 0], ['这个方法不行', 0, 0, 0, 0], ['这个方法不行', 0, 0, 0, 0], ['这个方法不行', 0, 0, 0, 0]]为了解决这个问题,推荐采用以下方法: In [7]:c = [[0] * 5 for _ in range(5)] In [8]:c[0][0]='这个方法行' In [9]:c Out[9]: [['这个方法行', 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |